From 9e1d920011b9316b6da98993ca7cd7017090c902 Mon Sep 17 00:00:00 2001 From: "awilliam@xenbuild2.aw" Date: Wed, 28 Feb 2007 10:55:50 -0700 Subject: [PATCH] [IA64] SN2 specific SAL calls for dom0 Signed-off-by: Jes Sorensen Signed-off-by: Alex Williamson --- xen/arch/ia64/xen/fw_emul.c | 65 ++++++++++++++++++++++++++++++++++++- 1 file changed, 64 insertions(+), 1 deletion(-) diff --git a/xen/arch/ia64/xen/fw_emul.c b/xen/arch/ia64/xen/fw_emul.c index 8a4897deaf..839171f6df 100644 --- a/xen/arch/ia64/xen/fw_emul.c +++ b/xen/arch/ia64/xen/fw_emul.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include @@ -131,6 +132,7 @@ sal_emulator (long index, unsigned long in1, unsigned long in2, unsigned long in3, unsigned long in4, unsigned long in5, unsigned long in6, unsigned long in7) { + struct ia64_sal_retval ret_stuff; unsigned long r9 = 0; unsigned long r10 = 0; long r11 = 0; @@ -375,8 +377,69 @@ sal_emulator (long index, unsigned long in1, unsigned long in2, if (!test_and_set_bit(_VCPUF_down, ¤t->vcpu_flags)) vcpu_sleep_nosync(current); break; + case SN_SAL_GET_MASTER_NASID: + status = -1; + if (current->domain == dom0) { + printk("*** Emulating SN_SAL_GET_MASTER_NASID ***\n"); + SAL_CALL_NOLOCK(ret_stuff, SN_SAL_GET_MASTER_NASID, + 0, 0, 0, 0, 0, 0, 0); + status = ret_stuff.status; + r9 = ret_stuff.v0; + r10 = ret_stuff.v1; + r11 = ret_stuff.v2; + } + break; + case SN_SAL_GET_KLCONFIG_ADDR: + status = -1; + if (current->domain == dom0) { + printk("*** Emulating SN_SAL_GET_KLCONFIG_ADDR ***\n"); + SAL_CALL_NOLOCK(ret_stuff, SN_SAL_GET_KLCONFIG_ADDR, + in1, 0, 0, 0, 0, 0, 0); + status = ret_stuff.status; + r9 = ret_stuff.v0; + r10 = ret_stuff.v1; + r11 = ret_stuff.v2; + } + break; + case SN_SAL_GET_SAPIC_INFO: + status = -1; + if (current->domain == dom0) { + printk("*** Emulating SN_SAL_GET_SAPIC_INFO ***\n"); + SAL_CALL_NOLOCK(ret_stuff, SN_SAL_GET_SAPIC_INFO, in1, + 0, 0, 0, 0, 0, 0); + status = ret_stuff.status; + r9 = ret_stuff.v0; + r10 = ret_stuff.v1; + r11 = ret_stuff.v2; + } + break; + case SN_SAL_GET_SN_INFO: + status = -1; + if (current->domain == dom0) { + printk("*** Emulating SN_SAL_GET_SN_INFO ***\n"); + SAL_CALL_NOLOCK(ret_stuff, SN_SAL_GET_SN_INFO, in1, + 0, 0, 0, 0, 0, 0); + status = ret_stuff.status; + r9 = ret_stuff.v0; + r10 = ret_stuff.v1; + r11 = ret_stuff.v2; + } + break; + case SN_SAL_IOIF_GET_HUBDEV_INFO: + status = -1; + if (current->domain == dom0) { + printk("*** Emulating SN_SAL_IOIF_GET_HUBDEV_INFO ***\n"); + SAL_CALL_NOLOCK(ret_stuff, SN_SAL_IOIF_GET_HUBDEV_INFO, + in1, in2, 0, 0, 0, 0, 0); + status = ret_stuff.status; + r9 = ret_stuff.v0; + r10 = ret_stuff.v1; + r11 = ret_stuff.v2; + } + break; default: - printk("*** CALLED SAL_ WITH UNKNOWN INDEX. IGNORED...\n"); + printk("*** CALLED SAL_ WITH UNKNOWN INDEX (%lx). " + "IGNORED...\n", index); status = -1; break; } -- 2.30.2